<?php

namespace app\common\model;

use think\Model;
use think\model\concern\SoftDelete;

class Member extends Model
{
    //软删除
    use SoftDelete;

    //只读字段
    protected $readonly = ['username','email'];

    //关联评论
    public function comments()
    {
        //会员与评论一对多，一个会员多条评论
        return $this->hasMany('Comment','member_id','id');
    }

    //会员添加
    public function add($data)
    {
        //创建验证器
        $validate = new \app\common\validate\Member();
        //当数据没有通过验证
        if (!$validate->scene('add')->check($data)){
            return $validate->getError();
        }
        //只验证数据库里有的字段并赋值给result
        $result = $this->allowField(true)->save($data);
        if ($result){
            return 1;
        }else{
            return '会员添加失败';
        }
    }

    //会员编辑
    public function edit($data)
    {
        //创建验证器
        $validate = new \app\common\validate\Member();
        //当数据没有通过验证
        if (!$validate->scene('edit')->check($data)){
            return $validate->getError();
        }
        //查询出member的id值赋值给memberInfo
        $memberInfo = $this->find($data['zid']);
        if ($data['oldpass'] != $memberInfo['password']){
            return '原密码不正确';
        }
        //将新密码和昵称赋值给数据库里的密码及昵称
        $memberInfo->password = $data['newpass'];
        $memberInfo->nickname = $data['nickname'];
        //修改结果赋值给result
        $result = $memberInfo->save();
        if ($result){
            return 1;
        }else{
            return '会员修改失败';
        }
    }

    //会员注册
    public function register($data)
    {
        //创建验证器
        $validate = new \app\common\validate\Member();
        //当数据没有通过验证
        if (!$validate->scene('register')->check($data)){
            return $validate->getError();
        }
        //通过验证，将注册结果返回给result
        $result = $this->allowField(true)->save($data);
        //判断是否注册成功
        if ($result){
            return 1;
        }else{
            return '注册失败';
        }
    }

    //会员登录
    public function login($data)
    {
        //创建验证器
        $validate = new \app\common\validate\Member();
        //当数据没有通过验证
        if (!$validate->scene('login')->check($data)){
            return $validate->getError();
        }
        //先清空验证码再从数据库里查询字段
        unset($data['verify']);
        $result = $this->where($data)->find();
        if ($result){
            //登录成功，将用户信息存入session
            $sessionData = [
                'id' => $result['id'],
                'nickname' => $result['nickname']
            ];
            session('index',$sessionData);
            return 1;
        }else{
            return '用户名或密码有误';
        }
    }
}
